﻿// 5077. 差分计数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
/*
https://www.acwing.com/problem/content/5080/

给定 n个整数 a1,a2,…,an 和一个整数 x。

请你计算，一共有多少个有序对 (i,j)满足 ai−aj=x。

注意：
i和 j可以相等。(1,2)和 (2,1)应视为两个不同的有序对。
输入格式
第一行包含两个整数 n,x。

第二行包含 n个整数 a1,a2,…,an。

输出格式
一个整数，表示满足条件的有序对的数量。

数据范围
1≤n≤106
,
−106≤x,ai≤106。

输入样例：
5 1
1 1 5 4 2
输出样例：
3
*/
const int N = 1000010;
int a[N];
unordered_map<int, int>  mm;
int n, x;


int main()
{
	//cin >> n >> x;
	scanf("%d%d", &n, &x);
	long long   ans = 0;
	for (int i = 0; i < n; i++) {
		int t; scanf("%d", &t);
		a[i] = t;
		mm[t]++;
	}

	for (int i = 0; i < n; i++) {
		int v = a[i];
		int find1 = x + v;
		int find2 = -x + v;
		ans += mm[find1];
		ans += mm[find2];

	}

	cout << ans / 2 << endl;

	return 0;
}
